//
//  DataSourceManage.h
//  Enote
//
//  Created by wangkejie on 2016/10/21.
//  Copyright © 2016年 Jack. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "CoreDataAPI.h"

@interface DataSourceManage : NSObject

@property (nonatomic,readonly, strong) CoreDataAPI * coreDataApi;

/**
 *  上传数据库模型名称
 */
@property (nonatomic,copy,readonly) NSString *coreDataModelName;
/**
 *  上传数据库实体名称
 */
@property (nonatomic,copy,readonly) NSString *coreDataEntityName;
/**
 *  上传数据库存储路径
 */
@property (nonatomic,copy,readonly) NSString *coreDataSqlPath;

/**
 *  上下文
 */
@property (nonatomic,readonly) NSManagedObjectContext *context;

+ (instancetype)sharedInstance;

/**
 *  添加一条便签
 *
 *  @param model   数据模型
 *  @param success 成功回调
 *  @param fail    失败回调
 */
- (void)insertEnoteModel:(Enote *)model success:(void(^)(void))success fail:(void(^)(NSError *error))fail;

/**
 *  更新一条便签
 *
 *  @param model   数据模型
 *  @param success 成功回调
 *  @param fail    失败回调
 */
- (void)updateEnoteModel:(Enote *)model success:(void(^)(void))success fail:(void(^)(NSError *error))fail;

/**
 *  删除一条便签
 *
 *  @param model   数据模型
 *  @param success 成功回调
 *  @param fail    失败回调
 */
- (void)deleteEnoteModel:(Enote *)model success:(void(^)(void))success fail:(void(^)(NSError *error))fail;

/**
 *  删除所有便签
 *
 *  @param success 成功回调
 *  @param fail    失败回调
 */
- (void)deleteAllDataModel:(void(^)(void))success fail:(void(^)(NSError *error))fail;

/**
 *  查询所有便签
 *
 *  @param success 成功回调（finishArray：已完成（Model对象数组） unfinishedArray：未完成（Model对象数组））
 *  @param fail    失败回调
 */
- (void)readAllDataModel:(void(^)(NSArray *modelArray))success fail:(void(^)(NSError *error))fail;

@end
